Cloud services, delivered through cloud-based systems, are experiencing rapid growth. In fact, users and Information Technology (IT) administrators are using cloud services for more and more applications. In such a globally distributed architecture where multiple applications, distributed across various data centers around the globe, are making changes to enterprise data, it becomes more and more important to audit all the configuration changes done by administrators. The main objectives of auditing are to figure out what was changed, when it was changed, and who changed it, and this information can used to: (1) track all administrator actions and monitor their role based access, (2) provide ability to track conflicting changes done by more than one administrator, (3) keep an eye on the security of enterprise applications/services by tracking unsuccessful logging attempts, and identify possible security attacks, and (4) secure enterprise data in a multi-tenant cloud service environments. Conventionally, it is the responsibility of application developers to add programming logic that can keep track of all the administrator actions. This not only contributes to development time and efforts but also add overhead to business applications. An application needs to perform these audit related activities along with its main business objectives that require more storage space and processor cycles including requiring storage space to store administrator's actions, and retrieving related audit logs from a vast number of records takes a lot of processor cycles. That is, traditionally, software developers use homegrown solutions to store entire audit logs and massage the data to fetch the results. This is a very time-consuming process and prone to performance issues.
This raises a need for an approach that takes storage and reporting, of these logs, separate from the main business application.